package exception;

public class Person {
    public int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) throws IllegalAgeException {
        if (age<0||age>100){
            /*
                除了RuntimeException以外的其他类型异常使用throw主动对外抛出时
                就要在方法上使用throw       s声明该异常的抛出通知调用者处理该异常，否则
                编译不通过

                RuntimeException:运行时异常，是非检查异常
                当编译器编译代码时发现抛出非检查异常时，并不要求必须写处理手段，但是
                检查异常(除了RuntimeException这类异常之外的其他异常)抛出时编译器
                就会检查是否有处理手段(要么try-catch要么throws)

                RuntimeException常见的子类型异常：
                NullPointerException            空指针异常
                ArrayIndexOutOfBoundsException  数组下标越界异常
                ClassCastException              类造型异常
                NumberFormatException
             */

           // throw new RuntimeException("年龄超过范围");
         //   throw new Exception("年龄超范围");
            throw new IllegalAgeException("年龄超出了范围");

        }
        this.age = age;
    }

}
